<template>
    <div class="login-wrap">
        <div class="ms-title">后台管理系统</div>
        <div class="ms-login">
            <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="0px" class="demo-ruleForm">
                <el-form-item prop="email">
                    <el-input v-model="ruleForm.email" placeholder="用户名"></el-input>
                </el-form-item>
                <el-form-item prop="password">
                    <el-input type="password" placeholder="密码" v-model="ruleForm.password" @keyup.enter.native="submitForm('ruleForm')"></el-input>
                </el-form-item>
                <div class="login-btn">
                    <el-button type="primary" @click="submitForm('ruleForm')">登录</el-button>
                </div>
                <!-- <p style="font-size:12px;line-height:30px;color:#999;">Tips : 用户名和密码随便填。</p> -->
            </el-form>
        </div>
    </div>
</template>

<script>
export default {
  data: function() {
    return {
      ruleForm: {
        email: '',
        password: ''
      },
      rules: {
        email: [
          {
            validator: (rule, value, callback) => {
              if (value === '') {
                callback(new Error('请输入用户名'))
              } else {
                let emailReg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/
                if (
                  emailReg.test(value)
                ) {
                  callback()
                } else {
                  callback(new Error('用户名至少6位,由大小写字母和数字,-,_或邮箱组成'))
                }
              }
            },
            trigger: 'blur'
          }
        ],
        password: [
          {
            validator: (rule, value, callback) => {
              if (value === '') {
                callback(new Error('请输入密码'))
              } else {
                if (!/^[a-zA-Z0-9_-]{6,16}$/.test(value)) {
                  callback(new Error('密码至少6位,由大小写字母和数字,-,_组成'))
                } else {
                  if (this.register === true) {
                    if (this.data.repassword !== '') {
                      this.$refs.data.validateField('repassword')
                    }
                  }
                  callback()
                }
              }
            },
            trigger: 'blur'
          }
        ]
      }
    }
  },
  methods: {
    submitForm(formName) {
      const self = this
      self.$refs[formName].validate(valid => {
        if (valid) {
            APP.ajax('post@login', {
                email: this.ruleForm.email,
                password: this.ruleForm.password
            }, res => {
                if (res.data.status === 200) {
                    localStorage.setItem('ms_username', this.ruleForm.email)
                    let auth_array = res.data.data.userinfo.roles[0].perms
                    let auth_list = []
                    auth_array.forEach(element => {
                      auth_list.push(element.name)
                    })
                    localStorage.setItem('auth_list', auth_list)
                    this.$router.push('/readme')
                } else {
                    alert(res.data.msg)
                }
            })
        } else {
          console.log('error submit!!')
          return false
        }
      })
    }
  },
  mounted() {
    if(localStorage.getItem('ms_username')) {
      this.$router.push('/readme');
    }
  }
}
</script>

<style scoped>
.login-wrap {
  position: relative;
  width: 100%;
  height: 100%;
}
.ms-title {
  position: absolute;
  top: 50%;
  width: 100%;
  margin-top: -230px;
  text-align: center;
  font-size: 30px;
  color: #fff;
}
.ms-login {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 300px;
  height: 160px;
  margin: -150px 0 0 -190px;
  padding: 40px;
  border-radius: 5px;
  background: #fff;
}
.login-btn {
  text-align: center;
}
.login-btn button {
  width: 100%;
  height: 36px;
}
</style>